package cn.tedu.charging.order.timer;

import cn.tedu.charging.common.pojo.po.ChargingBillExceptionPO;
import cn.tedu.charging.common.pojo.po.ChargingBillSuccessPO;
import cn.tedu.charging.order.repository.ExceptionBillRepository;
import cn.tedu.charging.order.repository.FailBillRepository;
import cn.tedu.charging.order.repository.SuccessBillRepository;
import com.xxl.job.core.context.XxlJobContext;
import com.xxl.job.core.handler.annotation.XxlJob;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.util.Date;

@Component
@Slf4j
public class OrderTimerJob {
    @Autowired
    private SuccessBillRepository successBillRepository;
    @Autowired
    private ExceptionBillRepository exceptionBillRepository;
    /**
     * 准备一个定时任务
     * 使用@XxlJob注解 定义jobHandler名字
     */
    @XxlJob("order-check-result")
    public void checkOrderResult(){
        log.debug("订单结果检查定时任务开始执行");
        //1.拿到任务中传递的参数billId orderNo
        String orderNo = XxlJobContext.getXxlJobContext().getJobParam();
        //2.读取successPO 读取到 没有读取到(fail订单)
        ChargingBillSuccessPO success=successBillRepository.findByBillId(orderNo);
        if (success!=null){
            log.debug("订单存在");
            //3.successPO status是否有值 是否==1
            Integer billStatus = success.getBillStatus();
            if (billStatus!=null&&billStatus==1){
                log.debug("当前订单没有正常结束");
                //3.1如果有值且等于1 修改订单状态为3 创建异常订单
                successBillRepository.updateStatus(orderNo,3);
                log.debug("修改订单状态 新增异常单完成1");
                ChargingBillExceptionPO exceptionPO=new ChargingBillExceptionPO();
                exceptionPO.setBillId(orderNo);
                exceptionPO.setCreateTime(new Date());
                exceptionBillRepository.save(exceptionPO);
                log.debug("修改订单状态 新增异常单完成2");
            }
        }
        //3.2没值 或者值不等于1 定时任务结束
    }
}
